/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.database.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author Yinna
 */
public class MD5Util {
    
    
	
	public MD5Util(){
		
	}
	
	    /**Convierte hashMd5 generado en Hexadecimal a la respectiva representaciÃ³n en  String
	     *
             * @param data caracter byte con el hash en Hexadecimal
	     * @return representacion del hash Md5 en String
	     */
	    private static String convertToHex(byte[] data) {
	        StringBuffer buf = new StringBuffer();
	        for (int i = 0; i < data.length; i++) {
	            int halfbyte = (data[i] >>> 4) & 0x0F;
	            int two_halfs = 0;
	            do {
	                if ((0 <= halfbyte) && (halfbyte <= 9))
	                    buf.append((char) ('0' + halfbyte));
	                else
	                    buf.append((char) ('a' + (halfbyte - 10)));
	                halfbyte = data[i] & 0x0F;
	            } while(two_halfs++ < 1);
	        }
	        return buf.toString();
	    }
	    
	    /**FunciÃ³n que genera el Hash MD5 para una cadena de caracteres
	     *
	     * @param text Cadena a la que se le desea generar el hash Md5
	     * @return Hash Md5 de la cadena reciba por parametro
	     * @throws NoSuchAlgorithmException
	     * @throws UnsupportedEncodingException
	     */
	    public static String getMD5(String cadena) 
	    throws NoSuchAlgorithmException, UnsupportedEncodingException  {
	        MessageDigest md;
	        md = MessageDigest.getInstance("MD5");
	        byte[] md5hash = new byte[32];
	        md.update(cadena.getBytes("UTF-8"), 0, cadena.length());
	        md5hash = md.digest();
	        return convertToHex(md5hash).toUpperCase();
	    } 
            
            
}
